Digest Authentication হল একটি নিরাপত্তা প্রোটোকল যা HTTP প্রোটোকলে ব্যবহৃত হয়, বিশেষত ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদ যোগাযোগের জন্য। এটি Basic Authentication এর তুলনায় বেশি সুরক্ষিত, কারণ এটি পাসওয়ার্ডগুলো সরাসরি পাঠায় না, বরং একটি হ্যাশ বা Digest পাঠায়, যা সার্ভারের সাথে মিলিয়ে যাচাই করা হয়। এই প্রক্রিয়ায়, পাসওয়ার্ড সরাসরি ট্রান্সমিট করা হয় না, তাই এটি Man-in-the-Middle Attacks থেকে সুরক্ষা প্রদান করে।
WWW-Authenticate
হেডার পাঠায়, যেখানে Digest Authentication এর প্রয়োজনীয় তথ্য থাকে।Apache HTTP Client ব্যবহার করে Digest Authentication সেটআপ করা সম্ভব। এটি HttpClient
কনফিগার করতে DigestScheme
ব্যবহার করে করা হয়, যা HttpRequest
বা HttpClient
এর মাধ্যমে অনুরোধ পাঠানোর সময় অন্তর্ভুক্ত করা হয়।
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.auth.DigestScheme;
import org.apache.http.impl.auth.Credentials;
import org.apache.http.impl.auth.UsernamePasswordCredentials;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
public class DigestAuthExample {
public static void main(String[] args) {
try {
// সার্ভারের Digest Authentication credentials সেট করা
String username = "testuser";
String password = "testpassword";
// CredentialsProvider তৈরি করে Digest Authentication credentials সেট করা
BasicCredentialsProvider credsProvider = new BasicCredentialsProvider();
Credentials credentials = new UsernamePasswordCredentials(username, password);
credsProvider.setCredentials(new org.apache.http.auth.AuthScope("example.com", 80), credentials);
// HttpClientBuilder ব্যবহার করে Digest Authentication কনফিগার করা
HttpClient httpClient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider)
.build();
// GET অনুরোধ তৈরি করা
HttpGet httpGet = new HttpGet("https://example.com/protected-resource");
// HTTP অনুরোধ পাঠানো
HttpResponse response = httpClient.execute(httpGet);
// সার্ভারের প্রতিক্রিয়া স্ট্যাটাস কোড পড়া
System.out.println("Response Status: " + response.getStatusLine());
// প্রতিক্রিয়া বডি পড়া
HttpEntity entity = response.getEntity();
if (entity != null) {
String responseBody = EntityUtils.toString(entity);
System.out.println("Response Body: " + responseBody);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Digest Authentication Credentials তৈরি করা
String username = "testuser";
String password = "testpassword";
username
এবং password
হল সেই ব্যবহারকারীর তথ্য যাকে Digest Authentication এর জন্য ব্যবহার করা হবে।CredentialsProvider তৈরি করা
BasicCredentialsProvider credsProvider = new BasicCredentialsProvider();
Credentials credentials = new UsernamePasswordCredentials(username, password);
credsProvider.setCredentials(new AuthScope("example.com", 80), credentials);
BasicCredentialsProvider
এবং UsernamePasswordCredentials
ব্যবহার করে Digest Authentication এর জন্য ব্যবহারকারী তথ্য (ইউজারনেম এবং পাসওয়ার্ড) সেট করা হয়। AuthScope
দ্বারা প্রোক্সি বা সার্ভারের হোস্ট এবং পোর্ট নির্দিষ্ট করা হয়।HttpClient তৈরি করা
HttpClient httpClient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider)
.build();
HttpClients.custom()
ব্যবহার করে কাস্টম HttpClient
তৈরি করা হয়, যেখানে Digest Authentication জন্য credsProvider
সেট করা হয়।GET অনুরোধ তৈরি করা এবং পাঠানো
HttpGet httpGet = new HttpGet("https://example.com/protected-resource");
HttpResponse response = httpClient.execute(httpGet);
HttpGet
ব্যবহার করে একটি GET অনুরোধ তৈরি করা হয়েছে, যা সার্ভারের প্রটেক্টেড রিসোর্সের জন্য পাঠানো হচ্ছে।প্রতিক্রিয়া এবং বডি পড়া
String responseBody = EntityUtils.toString(entity);
System.out.println("Response Body: " + responseBody);
Digest Authentication হল একটি নিরাপদ অথেনটিকেশন পদ্ধতি, যা HTTP অনুরোধে হ্যাশড (hashed) পাসওয়ার্ড প্রেরণ করে। Apache HTTP Client ব্যবহার করে Digest Authentication সহজেই কনফিগার করা যায় এবং সার্ভারের সাথে নিরাপদ যোগাযোগ করা সম্ভব। এটি বিশেষ করে অনলাইন নিরাপত্তার ক্ষেত্রে ব্যবহৃত হয়, যেখানে পাসওয়ার্ড নিরাপদে ব্যবহৃত হতে হয় এবং সরাসরি ট্রান্সমিট করা হয় না।
common.read_more